package cn.com.open.itembank.service;


import cn.com.open.itembank.dto.ChapterInputModel;
import cn.com.open.itembank.dto.ReturnModel;
import cn.com.open.itembank.entity.Chapter;

import java.util.List;

/**
 * Created by lucky on 2017/7/17.
 */
public interface ChapterService {

    /**
     * 新增章节.
     *
     * @param chapter 章节信息
     * @return the int
     */
    ReturnModel insert(String itemBankId, Chapter chapter);

    /**
     * 修改章节名称.
     *
     * @param id          章节id
     * @param chapterName 章节名称
     * @return the int
     */
    ReturnModel updateChapterName(String appKey,String itembankId,String id, String chapterName);

    /**
     * 拖拽更新章节
     *
     * @param id       章节ID
     * @param parentId 父章节ID
     * @param type     拖拽类型
     * @return the int
     */
    ReturnModel updateChapter(String appKey,String itemBankId,String id, String parentId, Integer type);

    /**
     * 拖拽后数据同步
     *
     * @param chapterInputModel   model
     * @return the int
     */
    ReturnModel dragChapter(String appKey,String itemBankId,ChapterInputModel chapterInputModel);

    /**
     * 删除题库下全部章节信息.
     *
     * @param itemBankId 题库ID
     * @return the int
     */
    ReturnModel deleteByItemBankId(String itemBankId);

    /**
     * 根据章节ID删除章节信息
     *
     * @param id 章节ID
     * @return the int
     */
    ReturnModel deleteById(String appKey,String itemBankId,String id);

    /**
     * 根据子章节ID删除章节信息
     *
     * @param childIds 子章节ID集合
     * @return the int
     */
    ReturnModel deleteByChildId(String appKey,String itemBankId,String childIds,String chapterId);

    /**
     * 获取课程全部章节
     * @param itemBankId
     * @return
     */
    ReturnModel getCourseChapter(String appKey,String itemBankId);

    /**
     * 获取章节列表
     *
     * @param itemBankId 题库id
     * @return the int
     */
    ReturnModel getChapterList(String appKey,String itemBankId);

    /**
     * 获取课程题库下所有章节列表(树)
     * @param itemBankId
     * @return
     */
    ReturnModel getAllChaptList(String appKey,String itemBankId);

    /**
     * 获取章节（策略用）
     * @param itemBankId        题库id
     * @param firstChapterId   第一个章节id
     * @param lastChapterId     最后一个章节id
     * @return
     */
    ReturnModel getChaptForRules(String appKey,String itemBankId,String firstChapterId,String lastChapterId);

    /**
     * 获取章节（策略修改用）
     * @param itemBankId
     * @return
     */
    ReturnModel getChaptForUpdateRules(String appKey,String itemBankId,String chapterId);

    /**
     * 获取章节根据章节id
     * @param chapterId
     * @return
     */
    Chapter getChapterById(String chapterId);

    /**
     * 获取章节获取章节(根据章节集合和章节id串)
     * @param chapterId
     * @return
     */
    ReturnModel getChildModel(String appKey,String itemBankId,List<Chapter> chapterList, String chapterId);

    /**
     * 根据课程Id获取章节（外部课程）
     * @param courseId
     * @return
     */
    ReturnModel getChapterByCourseId(String appKey,String courseId);
}
